package cn.bonoon.kernel.annotations;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * <pre>
 * 不包含数组的下标
 * 
 * 本注解与{@link OptionArray}注解分开，主要是{@link OptionArray}可以被定义成重用的，
 * 而本注解使用在某一个具体的实体里，比如：
 * 在公共的定义里把{@link OptionArray}定义为<code>OptionArray({"黑", "白", "红", "黄", "绿"})</code>
 * 在审查列表里只需要显示<code>"黑", "白"</code>，在另一个列表里只显示<code>"红", "黄"</code>的情况
 * </pre>
 * @author jackson
 *
 */
@Target(FIELD)
@Retention(RUNTIME)
public @interface OptionExclude {
	/**
	 * 需要被过滤掉的下标的数组，凡是在这里指定的下标，都会被指定的字符串替代
	 * @return
	 */
	int[] value() default {};
	/**
	 * 有效下标开始位置
	 * @return
	 */
	int start() default 0;
	/**
	 * 有效下标结束的位置，0表示没限制，即定义中数组的长度
	 * @return
	 */
	int end() default 0;
	
	/**
	 * 如果该项是被排除掉的，则可以定义该排除项告知的内容
	 * @return
	 */
	String replace() default "";
}
